#include <iostream>
//解决方式1：直接包含.cpp源文件
//#include "person.cpp"
//解决方式2：将声明和实现写到同一个文件中，并更改后缀名为.hpp，hpp是约定的名称，并不是强制
#include "person.hpp"

using namespace std;

//类模板分文件编写
//问题:类模板中成员函数创建时机是在调用阶段，导致分文件编写时链接不到
//解决方式1：直接包含.cpp源文件
//解决方式2：将声明和实现写到同一个文件中，并更改后缀名为.hpp，hpp是约定的名称，并不是强制
//主流的解决方式是第二种，将类模板成员函数写到一起，并将后缀名改为.hpp

//template<typename T, typename C>
//class Person {
//public:
//    T name;
//    C age;
//
//    Person(T name, C age);
//
//    void showPerson();
//};

//template<typename T, typename C>
//Person<T, C>::Person(T name, C age) {
//    this->name = name;
//    this->age = age;
//}
//
//
//template<typename T, typename C>
//void Person<T, C>::showPerson() {
//    cout << "name:" << this->name << ",age:" << this->age << endl;
//}

void test() {
    Person<string, int> p("jerry", 18);
    p.showPerson();
}

int main() {
    test();
    return 0;
}